package com.example.user_center.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
// 这个类相当于封装返回给前端的信息 包括 码 返回给前端的对象 以及相关的信息
public class BaseResponse<T> implements Serializable {

    @Serial
    private static final long serialVersionUID = 3788346347606680983L;

    private int code;

    // data的作用就是返回成功的参数 失败的返回null
    private T data;

    private String message;

    private String description; 

    // 所有参构造和无参构造已经有了
    // 这个构造器参数是传一个errorCode对象
    public BaseResponse(ErrorCode errorCode) {
        this(errorCode.getCode(), null,errorCode.getMessage(), errorCode.getDescription());
    }

    // 成功响应
    public BaseResponse(int code, T data, String message) {
        this(code,data,message,"");
    }

    public BaseResponse(ErrorCode errorCode,String description) {
        this(errorCode.getCode(), null,errorCode.getMessage(), errorCode.getDescription());
    }

    public BaseResponse(int code,String message,String description) {
        this(code,null,message,description);
    }

    public BaseResponse(ErrorCode errorCode,String message,String description) {
        this(errorCode.getCode(),null,message,description);
    }

}
